/**
 * 数据类型判断
 * @param {*} obj 要判断的数据
 */
export function _typeof(obj: any) {
  const s:string = Object.prototype.toString.call(obj)
  const result: any = s.match(/\[object (.*?)\]/)
  return result ? result[1].toLowerCase() : ''
}
// 是否undefined
export function __isUndefined(obj: any) {
  return _typeof(obj) === 'undefined'
}

// 判断是否数组类型
export function __isArray(arr: any) {
  return _typeof(arr) === 'array'
}

// 判断是否数字
export function __isNumber(num: any) {
  return _typeof(num) === 'number'
}

// 判断是否函数
export function __isFunction(fn: any) {
  return _typeof(fn) === 'function'
}

// 判断是否对象
export function __isObject(obj: any) {
  return _typeof(obj) === 'object'
}

// 判断是否Boolean
export function __isBoolean(obj: any) {
  return _typeof(obj) === 'boolean'
}

// 判断是否Date日期类
export function __isDate(obj: any) {
  return _typeof(obj) === 'date'
}

// 判断是否正则表达式
export function __isRegexp(obj: any) {
  return _typeof(obj) === 'regexp'
}

// 判断是否null
export function __isNull(obj: any) {
  return _typeof(obj) === 'null'
}

// 判断是否String
export function __isString(obj: any) {
  return _typeof(obj) === 'string'
}

/**
 _typeof([12,3,343]); "array"
 _typeof({name: 'zxc', age: 18}); "object"
 _typeof(1); "number"
 _typeof("1"); "string"
 _typeof(null); "null"
 _typeof(undefined); "undefined"
 _typeof(NaN); "number"
 _typeof(Date); "function"
 _typeof(new Date()); "date"
 _typeof(new RegExp()); "regexp"
 */
